home *** CD-ROM | disk | FTP | other *** search
- /* © Harold H. Ipolyi 11 June 1994
-
- Requires ScionGenealogist V 3.06+
-
- -------------------------------README----------------------------------------
- Short: ScionGenealogist > Mosaic.html
- Type: util/rexx
- Uploader: ipolyi@pat.mdc.com
- Author: Harold H. Ipolyi
- USmail: P.O.Box 891206, Houston, Tx 77289-1206
- Relsd: 11 June 1994 . ScionGenealogist V 3.06
- Rev01: 19 June 1994 . MakeDir(Gdir) fixed; extra comments processed.
- Rev02: 25 June 1994 . Fixed descenders; Women in List italicised.
-
- Arexx script to convert ScionGenealogist data base to Mosaic hypertext format.
-
-
- WHY? some others in my family don't have Amigas.
-
- ScionGenealogist is easy to use, comprehensive, and
- provides Arexx ports for extracting data.
-
- An ARexx script can repeatedly and painlessly recreate Mosaic
- .html files from entries in the ScionGenealogist data base.
-
- Mosaic is an available common method of presentation.
-
-
- TESTED: on Amiga3000 Kickstart v.37.175 Workbench v.38.35
- w/ ScionGenealogist V 3.06 & Mosaic1.2beta_NoNet
- w/ ScionGenealogist V 3.06 & Mosaic1.2_NoNet
-
- Mosaic .html file compatibility tested on Sun NCSA Mosaic
-
-
- 100 ScionGenealogist entries create approx 75Kb of .html files.
- -------------------------------README----------------------------------------
-
- -----------------------------------------------------------------
- | This Script is somewhat dependent on the following conventions |
- | that I followed in my data base: |
- | |
- | · lastnames are kept pure (no honorifics, Jr's, III's ) |
- | |
- | · given names have any and all honorifics AFTER a COMMA |
- | |
- | for example: LastName FirstNames, honorifics |
- | |
- | BAUER-GAUSS Joseph, Dr. |
- | DAGLEY Richard Kelley, Jr. |
- | |
- |-----------------------------------------------------------------|
- | |
- | For a name change (not maidenname > marriedname), try this: |
- | New Birth Name > Changed To, Ph. D. |
- | which lists as: Birth Name > Changed To New, Ph. D. |
- | |
- |-----------------------------------------------------------------|
- | |
- | · all dates are in the author's suggested form: 8 Jul 1939 |
- | |
- | ( not only is 7/8/39 ambigous, it will also break ) |
- | ( my .html file naming convention in a big way ) |
- | |
- | ( To any who may ask: it would be easy code around, ) |
- | ( but the form suggested by ScionGenealogist author ) |
- | ( Robbie J Akins makes much more sense to me! ) |
- | |
- | · if Death Date is blank; Death Place can be a COMMENT field |
- | e.g. Phone # |
- | · if Burial Date is blank; Burial Place can be a COMMENT field |
- | e.g. Address |
- -----------------------------------------------------------------
-
- * Running 'rx Scion3.06ToMosaic.rexx' gives further directions
-
- * Briefly, · start ScionGenealogist and load a data base
- * · 'assign Genealogy: '{Scion data base directory}
- * · start a Shell, cd to wherever you have or wish to have
- * the directory of Mosaic .html's
- * · 'rx Scion3.06ToMosaic.rexx Normal' to automagically create a
- * Mosaic .html file for each person in your
- * ScionGenealogist data base; following the TEMPLATE:
-
- ####################################################################
- <TITLE>PERSON Data Sheet</TITLE>
- <H2>PERSON (PERSONGENDER) <A HREF="PERSONI.html"><i>more info</i></A> (())
- <A href="Genealogy/GenealogyFile.html"><B>List of persons.</B></A></H2>
- <H3>
- Born: BIRTHDATe ^ BIRTHPLACE <P>
- <P>
- Died: DEATHDATE + DEATHPLACE . Buried: BURIALPLACE <P>
- <P>
- </H3>
- <HR> /* NEW FORMAT BELOW */
- <PRE>
- <TT>
- <A HREF="FATHER.html">FATHER</A>_//\_<A HREF="MOTHER.html">MOTHER</A> & MARRIAGEDATE @ MARRIAGEPLACE
- |_____ <A HREF="SIBLING1.html">SIBLING1</A> (SIBLING1GENDER) ^ SIBLING1BIRTHDAT
- |_____ <A HREF="SIBLING2.html">SIBLING2</A> (SIBLING2GENDER) ^ SIBLING2BIRTHDAT
- |_____ <A HREF="SIBLING3.html">SIBLING3</A> (SIBLING3GENDER) ^ SIBLING3BIRTHDAT
- |
- <B>PERSON</B>_//\_<A HREF="SPOUSE1.html">SPOUSE1</A> & MARRIAGE1DATE @ MARRIAGE1PLACE
- | | |_____ <A HREF="mFGRN1c1.html">mFGRN1c1</A> (mFGRN1c1GENDER) ^ mFGRN1c1BIRTHDATE
- | | |_____ <A HREF="mFGRN1c2.html">mFGRN1c2</A> (mFGRN1c2GENDER) ^ mFGRN1c2BIRTHDATE
- | | |_____ <A HREF="mFGRN1c3.html">mFGRN1c3</A> (mFGRN1c3GENDER) ^ mFGRN1c3BIRTHDATE
- | |
- | |_//\_<A HREF="SPOUSE2.html">SPOUSE2</A> & MARRIAGE2DATE @ MARRIAGE2PLACE
- | |_____ <A HREF="mFGRN2c1.html">mFGRN2c1</A> (mFGRN2c1GENDER) ^ mFGRN2c1BIRTHDATE
- | |_____ <A HREF="mFGRN2c2.html">mFGRN2c2</A> (mFGRN2c2GENDER) ^ mFGRN2c2BIRTHDATE
- | |_____ <A HREF="mFGRN2c3.html">mFGRN2c3</A> (mFGRN2c3GENDER) ^ mFGRN2c3BIRTHDATE
- |
- |_//\_<A HREF="SPOUSE3.html">SPOUSE3</A> & MARRIAGE3DATE @ MARRIAGE3PLACE
- |_____ <A HREF="mFGRN3c1.html">mFGRN3c1</A> (mFGRN3c1GENDER) ^ mFGRN3c1BIRTHDATE
- |_____ <A HREF="mFGRN3c2.html">mFGRN3c2</A> (mFGRN3c2GENDER) ^ mFGRN3c2BIRTHDATE
- |_____ <A HREF="mFGRN3c3.html">mFGRN3c3</A> (mFGRN3c3GENDER) ^ mFGRN3c3BIRTHDATE
- ####################################################################
-
- * In a Mosaic file (maybe HOME PAGE) have an anchor pointing to GenealogyFile:
-
- <A href="file://localhost/Doc:Mosaic/DBNAMEGenealogy/GenealogyFile.html">
- Genealogy</A>
-
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- ^^ assumes you ran 'rx Scion3.06ToMosaic.rexx Normal' in directory: Doc:Mosaic ^^
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- * You might also create an {MyGenealogy}.html file yourself in directory
- * Doc:Mosaic/DBNAMEGenealogy as a starting point, with the anchor of
-
- <A href="file://localhost/Doc:Mosaic/DBNAMEGenealogy/MyGenealogyFile.html">
- My Genealogy</A>
-
- e.g.:
- _____________________________________________________________
-
- <TITLE>FirstName LastName Genealogy </TITLE>
- <H1>FirstName LastName Genealogy</H1>
- <HR>
- <A HREF="GenealogyFile.html">List of Persons.</A><P>
-
- This is the genealogy of
- <A href="FiLast8Jul1939.html">FirstName LastName</A>.
- _____________________________________________________________
- ^^^^^^^^^^^^^^
- * Note the convention of first 2 characters from FirstName
- * first 4 characters from LastName
- * & BirthDate (with all blanks removed)
- *
- * If the BirthDate is not entered, the convention is:
- * first 2 characters from FirstName
- * first 6 characters from LastName
- * & ScionGenealogist IRN
- *
- «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
- »«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«
- «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
- »«»« »«»«
- «»«» GetLastName: this PROCEDURE at the very end of this script «»«»
- »«»« is used to Capitalize Last Names. »«»«
- «»«» ------------------------------------------------------------- «»«»
- »«»« | it can also be used to handle "non-conforming" Last Names | »«»«
- «»«» | e.g. "MAC ISAAC" --> "MacISAAC" | «»«»
- »«»« | "VON NUEMANN" --> "VonNuemann" | »«»«
- «»«» ------------------------------------------------------------- «»«»
- »«»« BUT: you must add the additional tests yourself (it's easy!) »«»«
- «»«» «»«»
- «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
- »«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«
- «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
-
- * The PN{IRN}.DBNAME files are used to generate the "more info" files.
-
- * Whenever the PN{IRN}.DBNAME is changed or replaced, the corresponding
- * "more info" file will be updated if 'rx Scion3.06ToMosaic.rexx {IRN}' is re-run.
-
- * TO DO: picture file anchors? PP{IRN}.DBNAME? ILBM not portable. Convert?
-
- */
-
- IF ~Show(p,'SCIONGEN') THEN DO
- SAY ' '
- SAY ' ScionGenealogist is NOT currently running:'
- SAY ' '
- SAY ' 1. Please start ScionGenealogist and'
- SAY ' '
- SAY ' 2. load the desired data base. Then:'
- SAY ' '
- SAY ' 3. rx Scion3.06ToMosaic.rexx Normal'
- SAY ' '
- EXIT
- END
-
- PARSE ARG target
- IF target = "" THEN
- DO
- SAY ' '
- SAY ' please send comments, questions to:'
- SAY ' '
- SAY ' ipolyi@pat.mdc.com'
- SAY ' or:'
- SAY ' Harold H. Ipolyi '
- SAY ' P.O.Box 891206 '
- SAY ' Houston, Tx 77289-1206 '
- SAY ' '
- SAY ' Convert ScionGenealogist information to Mosaic hypertext '
- SAY ' '
- SAY 'Usage: rx Scion3.06ToMosaic.rexx Normal {recreates all PERSON.html files}'
- SAY ' rx Scion3.06ToMosaic.rexx IRN {recreates a PERSON.html file}'
- SAY ' '
- EXIT
- END
- ELSE target = Upper(target)
-
- /* add libraries */
- libs = 'rexxsupport.library rexxarplib.library'
- DO i = 1 TO Words(libs)
- lib = Word(libs,i)
- IF ~Show('Lib',lib) THEN DO
- IF EXISTS('LIBS:'lib) then call addlib lib, 0, -30
- ELSE DO
- 'message "===> cannot find' lib 'in LIBS:"'
- EXIT 10
- END
- END
- END i
-
- Address "SCIONGEN" /* Point at Scion Genealogist port */
- options RESULTS
- 'GETDBNAME' /* Issue command to Scion Genealogist */
- DBNAME = RESULT
- /* ??? GETDBDIRPATH ??? of Scion data base */
-
- SAY ' '
- Say ' Testing: is data base assignment of Genealogy:'DBNAME' visible?'
- SAY ' '
-
- PRAGMA('w','n')
- IF ~Exists("Genealogy:"DBNAME) THEN DO
- SAY ' Genealogy:'DBNAME' not found,'
- SAY ' '
- SAY " Please create an assign to data base "DBNAME"'s directory:"
- SAY ' '
- SAY ' assign Genealogy: {Volume:Directory}'
- SAY ' '
- EXIT
- END
- PRAGMA('w','w')
-
- Gdir = DBNAME'Genealogy'
-
- IF ~Makedir(Gdir) THEN DO
- SAY ' '
- SAY ' ===> unable to create directory: 'Gdir
- SAY ' '
- EXIT
- END
-
-
- 'GETTOTALIRN' /* Issue command to Scion Genealogist */
- TOTALIRN = RESULT
-
- Say "Number of people in database " DBNAME " = " TOTALIRN
- IF IsNumeric(target) THEN
- DO
- Say "Processing person " target " of " TOTALIRN " in database " DBNAME
- IF target <= TOTALIRN THEN CALL MakeOne(target)
- END
- ELSE
- DO
- IF target = "TEST" THEN DO
- DO i = 1 TO 7
- CALL MakeOne(i)
- END
- END
- ELSE
- DO
- Say "Processing all " TOTALIRN " persons in database " DBNAME
-
- /* GenealogyFile.html is a Scion data base IRN order list of all persons in
- Mosaic .html format, format:
-
- person ^ birthdate + deathdate (()) father //\ mother */
-
- Say 'Mosaic file name: 'Gdir'/GenealogyFile.html for: List of Persons.'
-
- Open('GenealogyFile',Gdir'/GenealogyFile.html','w')
- WriteLn('GenealogyFile','<HTML>')
- WriteLn('GenealogyFile','<TITLE>List of Persons.</TITLE>')
- WriteLn('GenealogyFile','<H2>List of Persons in data base "'DBNAME'". <B>'Time()' - 'Date()'</B></H2>')
- WriteLn('GenealogyFile','<H3>')
-
- DO i = 1 TO TOTALIRN
- CALL MakeOne(i)
- END
- WriteLn('GenealogyFile','</H3>')
- WriteLn('GenealogyFile','<HR>')
- WriteLn('GenealogyFile','<Address>')
- WriteCh('GenealogyFile','<H3>ScionGenealogist © Robbie J Akins; ')
- WriteLn('GenealogyFile','Scion3.06ToMosaic.rexx © Harold Ipolyi</H3>')
- WriteLn('GenealogyFile','</Address>')
- WriteLn('GenealogyFile','</HTML>')
- END
- Say ' '
- ThisPath = PRAGMA('d')
- IF Substr(ThisPath,Length(ThisPath),Length(ThisPath)) ~= ":" THEN ThisPath = ThisPath'/'
- Say ' ---------------------------------------------------------------------'
- Say ' If you have not already done so, add the following anchor pointing to'
- Say ' "'GetLastName(DBNAME)' Genealogy" to a Mosaic file (maybe HOME PAGE):'
- Say ' ---------------------------------------------------------------------'
- Say ' <A href="/'ThisPath||Gdir'/GenealogyFile.html">'GetLastName(DBNAME)' Genealogy</A>'
- Say ' ------------------------------------------------------------------'
- Say ' '
- END
- Say 'Scion3.06ToMosaic.rexx completed normally'
- EXIT
-
- /*************************************************************************/
-
- MakeOne: PROCEDURE EXPOSE target DBNAME Gdir
- PARSE ARG ScionIRN
- 'EXISTPERSON' ScionIRN
- /**/
- if RESULT = 'YES' THEN
- DO
- 'GETLASTNAME' ScionIRN
- LASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' ScionIRN
- FIRSTNAME = RESULT
- thelastname = LASTNAME
- FULLNAME = GetFullName(FIRSTNAME)
- 'GETSEX' ScionIRN
- GENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- 'GETBIRTHDATE' ScionIRN
- BIRTHDATE = RESULT
- 'GETBIRTHPLACE' ScionIRN
- BIRTHPLACE = RESULT
- 'GETDEATHDATE' ScionIRN
- DEATHDATE = RESULT
- 'GETDEATHPLACE' ScionIRN
- DEATHPLACE = RESULT
- 'GETBURIALPLACE' ScionIRN
- BURIALPLACE = RESULT
- 'GETPERSUSER1' ScionIRN
- PERSUSER1 = RESULT
- 'GETPERSUSER2' ScionIRN
- PERSUSER2 = RESULT
- 'GETPERSUSER3' ScionIRN
- PERSUSER3 = RESULT
- /**/
- IF LASTNAME = "" THEN
- DO
- Say "Person " ScionIRN"'s last name is not defined; no new Mosaic file being created!"
- RETURN
- END
- IF BIRTHDATE = "" THEN
- PERSONFILENAME = Space(substr(FIRSTNAME,1,2) substr(LASTNAME,1,6) ScionIRN)
- ELSE
- PERSONFILENAME = Space(substr(FIRSTNAME,1,2) substr(LASTNAME,1,4) BIRTHDATE)
- /**/
- PfilN = Gdir'/'PERSONFILENAME
- Say 'Mosaic file name: 'PfilN'.html for: 'FULLNAME' {'ScionIRN'}'
- Open('PERSONFILE',PfilN'.html','w')
- WriteLn('PERSONFILE','<HTML>')
- WriteLn('PERSONFILE','<TITLE>'FULLNAME' Data Sheet</TITLE>')
- WriteCH('PERSONFILE','<H2>'FULLNAME' ('GENDER') ')
- /**/
- IF Exists(PfilN'I.html') THEN DO
- IF Exists('Genealogy:PN'ScionIRN'.'DBNAME) THEN DO
- Parse value StateF(PfilN'I.html') with type size blk bits PFday PFmin PFtick com
- Parse value StateF('Genealogy:PN'ScionIRN'.'DBNAME) with type size blk bits PNday PNmin PNtick com
- /* Say PERSONFILENAME'I.html' PFday PFmin PFtick 'Genealogy:PN'ScionIRN'.'DBNAME PNday PNmin PNtick */
- IF ( PNday > PFday ) | ( PNday = PFday & PNmin > PFmin ) THEN DO
- Delete(PfilN'I.html')
- Say 'Scion file Genealogy:PN'ScionIRN'.'DBNAME 'newer than 'PfilN'I.html; replacing!'
- END
- END
- END
- /**/
- IF Exists(PfilN'I.html') THEN
- WriteCH('PERSONFILE',' <A HREF="'PERSONFILENAME'I.html"><i>more info</i></A>')
- ELSE DO
- IF Exists('Genealogy:PN'ScionIRN'.'DBNAME) THEN DO
- Say 'Writing info file 'PfilN'I.html'
- Open('PNDBNAME','Genealogy:PN'ScionIRN'.'DBNAME,'r')
- Open('PERSONI',PfilN'I.html','w')
- WriteLn('PERSONI','<HTML>')
- WriteLn('PERSONI','<TITLE>'FULLNAME' Information</TITLE>')
- WriteLn('PERSONI','<H2>'FULLNAME' Information.</H2><PRE><TT>')
- DO While ~EOF('PNDBNAME')
- line = ReadLn('PNDBNAME')
- WriteLn('PERSONI',line)
- END
- Close('PNDBNAME')
- WriteLn('PERSONI','</HTML>')
- Close('PERSONI')
- WriteCH('PERSONFILE',' <A HREF="'PERSONFILENAME'I.html"><i>more info</i></A>')
- END
- END
- /**/
- WriteLn('PERSONFILE',' <A HREF="GenealogyFile.html"><B>List of Persons.</B></A></H2><H3>')
- IF BIRTHDATE || BIRTHPLACE ~= "" THEN DO
- WriteCh('PERSONFILE','Born: ')
- IF BIRTHDATE ~= "" THEN WriteCh('PERSONFILE',BIRTHDATE)
- IF BIRTHPLACE ~= "" THEN WriteCh('PERSONFILE',' ^ 'BIRTHPLACE)
- WriteLn('PERSONFILE','<BR>')
- END
- IF DEATHDATE ~= "" THEN
- DO
- WriteCH('PERSONFILE','Died: 'DEATHDATE' + 'DEATHPLACE)
- IF BURIALPLACE ~= "" THEN WriteCH('PERSONFILE',' . Buried: 'BURIALPLACE)
- WriteLn('PERSONFILE','<BR>')
- END
- ELSE
- DO
- IF DEATHPLACE ~= "" THEN WriteLn('PERSONFILE',DEATHPLACE'<BR>')
- IF BURIALPLACE ~= "" THEN WriteLn('PERSONFILE',BURIALPLACE'<BR>')
- END
- IF PERSUSER1 ~= "" THEN WriteLn('PERSONFILE',PERSUSER1'<BR>')
- IF PERSUSER2 ~= "" THEN WriteLn('PERSONFILE',PERSUSER2'<BR>')
- IF PERSUSER3 ~= "" THEN WriteLn('PERSONFILE',PERSUSER3'<BR>')
-
- /* end of personal data; start family tree segment */
-
- WriteLn('PERSONFILE','<HR>')
- WriteLn('PERSONFILE','<PRE><TT>')
- 'GETPARENTS' ScionIRN
- PARENTS = RESULT
- tPARENTSt = 't'PARENTS't'
- /* Say 'PARENTS = 'PARENTS tPARENTSt ??? EXISTPARENTS IRN ??? */
- HasFileFATHER = 0
- HasFileMOTHER = 0
- HasMOTHER = 0
- HasFATHER = 0
- /**/
- IF tPARENTSt ~= 'tt' THEN
- DO
- PARENTS = RESULT
- 'GETPRINCIPAL' PARENTS
- PRINCIPAL = RESULT
- 'GETSPOUSE' PARENTS
- SPOUSE = RESULT
- 'GETMARRYDATE' PARENTS
- PARENTSMARRIAGEDATE = RESULT
- 'GETMARRYPLACE' PARENTS
- PARENTSmFGRNPLACE = RESULT
- 'GETFAMUSER1' PARENTS
- PARENTSmFGRNCELEBRANT = RESULT
- 'GETFAMUSER2' PARENTS
- PARENTSmFGRNCOMMENT = RESULT
- 'GETSEX' PRINCIPAL
- IF RESULT = 'M' THEN
- DO
- FATHERScionIRN = PRINCIPAL
- MOTHERScionIRN = SPOUSE
- END
- ELSE
- DO
- FATHERScionIRN = SPOUSE
- MOTHERScionIRN = PRINCIPAL
- END
- 'GETLASTNAME' FATHERScionIRN
- FATHERLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' FATHERScionIRN
- FATHERFIRSTNAME = RESULT
- IF FATHERFIRSTNAME ~= "" THEN HasFATHER = 1
- thelastname = FATHERLASTNAME
- FATHERFULLNAME = GetFullName(FATHERFIRSTNAME)
- 'GETBIRTHDATE' FATHERScionIRN
- FATHERBIRTHDATE = RESULT
- 'GETLASTNAME' MOTHERScionIRN
- MOTHERLASTNAME= GetLastName(RESULT)
- 'GETFIRSTNAME' MOTHERScionIRN
- MOTHERFIRSTNAME = RESULT
- IF MOTHERFIRSTNAME ~= "" THEN HasMOTHER = 1
- thelastname = MOTHERLASTNAME
- MOTHERFULLNAME = GetFullName(MOTHERFIRSTNAME)
- 'GETBIRTHDATE' MOTHERScionIRN
- MOTHERBIRTHDATE = RESULT
- /**/
- IF FATHERLASTNAME ~= "" THEN
- DO
- HasFileFATHER = 1
- IF FATHERBIRTHDATE = "" THEN
- DO
- FATHERFILENAME = Space(substr(FATHERFIRSTNAME,1,2) substr(FATHERLASTNAME,1,6) FATHERScionIRN)
- END
- ELSE
- DO
- FATHERFILENAME = Space(substr(FATHERFIRSTNAME,1,2) substr(FATHERLASTNAME,1,4) FATHERBIRTHDATE)
- END
- END
- /**/
- IF MOTHERLASTNAME ~= "" THEN
- DO
- HasFileMOTHER = 1
- IF MOTHERBIRTHDATE = "" THEN
- DO
- MOTHERFILENAME = Space(substr(MOTHERFIRSTNAME,1,2) substr(MOTHERLASTNAME,1,6) MOTHERScionIRN)
- END
- ELSE
- DO
- MOTHERFILENAME = Space(substr(MOTHERFIRSTNAME,1,2) substr(MOTHERLASTNAME,1,4) MOTHERBIRTHDATE)
- END
- END
- /**/
- WriteCH('PERSONFILE',' ')
- IF HasFileFATHER THEN WriteCH('PERSONFILE','<A HREF="'FATHERFILENAME'.html">')
- WriteCH('PERSONFILE',FATHERFULLNAME)
- IF HasFileFATHER THEN WriteCH('PERSONFILE','</A> //\ ')
- IF HasFileMOTHER THEN WriteCH('PERSONFILE','<A HREF="'MOTHERFILENAME'.html">')
- WriteCH('PERSONFILE',MOTHERFULLNAME)
- IF HasFileMOTHER THEN WriteCH('PERSONFILE','</A>')
- /**/
- IF PARENTSMARRIAGEDATE ~= "" THEN
- WriteCH('PERSONFILE',' & 'PARENTSMARRIAGEDATE)
- IF PARENTSmFGRNPLACE ~= "" THEN
- WriteCH('PERSONFILE',' @ 'PARENTSmFGRNPLACE)
- /**/
- WriteLn('PERSONFILE','')
- spcs = ' |'
- DO i = 0 TO Length(FATHERFULLNAME)
- spcs = spcs' ' /* ??? GETFAMLBL1 ??? */
- END /* ??? GETFAMLBL2 ??? */
- IF PARENTSmFGRNCELEBRANT ~= '' THEN WriteLn('PERSONFILE',spcs' Celebrant: 'PARENTSmFGRNCELEBRANT)
- IF PARENTSmFGRNCOMMENT ~= '' THEN WriteLn('PERSONFILE',spcs' 'PARENTSmFGRNCOMMENT' ')
- DO i = 0 TO 39 /* ??? GETTOTCHILDREN FGRN ??? */
- 'GETCHILD' PARENTS i
- PARENTSc = RESULT
- 'GETFIRSTNAME' PARENTSc
- PARENTScFIRSTNAME = RESULT
- /**/
- IF PARENTScFIRSTNAME ~= "" THEN
- DO
- IF PARENTSc ~= ScionIRN THEN
- DO
- 'GETLASTNAME' PARENTSc
- PARENTScLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' PARENTSc
- PARENTScFIRSTNAME = RESULT
- thelastname = PARENTScLASTNAME
- PARENTScFULLNAME = GetFullName(PARENTScFIRSTNAME)
- 'GETSEX' PARENTSc
- PARENTScGENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- 'GETBIRTHDATE' PARENTSc
- PARENTScBIRTHDATE = RESULT
- 'GETDEATHDATE' PARENTSc
- PARENTScDEATHDATE = RESULT
- /**/
- IF PARENTScBIRTHDATE = "" THEN
- PARENTScFILENAME = Space(substr(PARENTScFIRSTNAME,1,2) substr(PARENTScLASTNAME,1,6) PARENTSc)
- ELSE
- PARENTScFILENAME = Space(substr(PARENTScFIRSTNAME,1,2) substr(PARENTScLASTNAME,1,4) PARENTScBIRTHDATE)
- /**/
- WriteCH('PERSONFILE',' |_____ <A HREF="'PARENTScFILENAME'.html">')
- /**/
- IF PARENTScLASTNAME ~= FATHERLASTNAME THEN
- WriteCH('PERSONFILE',' 'PARENTScFULLNAME)
- ELSE
- WriteCH('PERSONFILE',PARENTScFIRSTNAME )
- /**/
- WriteCH('PERSONFILE','</A> ('PARENTScGENDER') 'PARENTScBIRTHDATE)
- /**/
- IF PARENTScDEATHDATE ~= "" THEN
- WriteCH('PERSONFILE',' + 'PARENTScDEATHDATE)
- /**/
- Writeln('PERSONFILE','')
- END
- END
- END
- END
- END
-
- /* end of parents, siblings segment; start marriages segment */
-
- vert.0 = ''
- vert.1 = ' |'
- DO i = 0 TO 39 /* ??? GETTOTMARRIAGES IRN ??? */
- 'GETMARRIAGE' ScionIRN i
- MARRIAGE = RESULT /* use: 'EXISTFAMILY' */
- IF MARRIAGE > -1 THEN
- DO
- MARRIAGES = i
- j = i + 1
- vert.j = vert.i vert.1
- END
- END
- tMARRIAGESt = 't'MARRIAGES't'
- /* Say 'MARRIAGES = 'MARRIAGES tMARRIAGESt */
-
- IF tMARRIAGESt ~= 'tMARRIAGESt' THEN
-
- DO
- WriteLn('PERSONFILE',' |')
- DO i = 0 TO MARRIAGES
- 'GETMARRIAGE' ScionIRN i
- mFGRN = RESULT
- IF mFGRN ~= "" THEN
- DO
- ki = MARRIAGES - i + 1
- IF ki ~= MARRIAGES + 1 THEN WriteLn('PERSONFILE',vert.ki)
- j = MARRIAGES + 1 - i
- 'GETSPOUSE' mFGRN
- SPOUSE = RESULT
- IF SPOUSE = ScionIRN THEN
- DO
- 'GETPRINCIPAL' mFGRN
- SPOUSE = RESULT
- END
- 'GETLASTNAME' SPOUSE
- SPOUSELASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' SPOUSE
- SPOUSEFIRSTNAME = RESULT
- thelastname = SPOUSELASTNAME
- SPOUSEFULLNAME = GetFullName(SPOUSEFIRSTNAME)
- 'GETBIRTHDATE' SPOUSE
- SPOUSEBIRTHDATE = RESULT
- 'GETMARRYDATE' mFGRN
- MARRIAGEDATE = RESULT
- 'GETMARRYPLACE' mFGRN
- mFGRNPLACE = RESULT
- 'GETFAMUSER1' mFGRN
- MARRIAGECELEBRANT = RESULT
- 'GETFAMUSER2' mFGRN
- MARRIAGECOMMENT = RESULT
- /**/
- IF SPOUSEBIRTHDATE = "" THEN
- SPOUSEFILENAME = Space(substr(SPOUSEFIRSTNAME,1,2) substr(SPOUSELASTNAME,1,6) SPOUSE)
- ELSE
- SPOUSEFILENAME = Space(substr(SPOUSEFIRSTNAME,1,2) substr(SPOUSELASTNAME,1,4) SPOUSEBIRTHDATE)
- /**/
- IF i = 0 THEN
- DO
- WriteCH('PERSONFILE',' <B>'FULLNAME'</B> //\ ')
-
- IF SPOUSELASTNAME ~= "" THEN
- WriteCH('PERSONFILE','<A HREF="'SPOUSEFILENAME'.html">')
-
- WriteCH('PERSONFILE',SPOUSEFULLNAME)
-
- IF SPOUSELASTNAME ~= "" THEN
- WriteCH('PERSONFILE','</A>')
-
- END
-
- ELSE DO
- WriteCH('PERSONFILE',vert.j'_ //\ ')
-
- IF SPOUSELASTNAME ~= "" THEN
- WriteCH('PERSONFILE','<A HREF="'SPOUSEFILENAME'.html">')
-
- WriteCH('PERSONFILE',SPOUSEFULLNAME)
-
- IF SPOUSELASTNAME ~= "" THEN
- WriteCH('PERSONFILE','</A>')
-
- END
-
- IF MARRIAGEDATE ~= "" THEN
- WriteCH('PERSONFILE',' & 'MARRIAGEDATE)
- IF mFGRNPLACE ~= "" THEN
- WriteCH('PERSONFILE',' @ 'mFGRNPLACE)
-
- WriteLn('PERSONFILE','')
- jk = MARRIAGES - i
- spcs = vert.jk' | '
- /* ll = 2
- IF i = 0 THEN ll = GetLength(FULLNAME) - Length(vert.j)
- DO l = 0 TO ll
- spcs = spcs' '
- END */
- IF MARRIAGECELEBRANT ~= '' THEN WriteLn('PERSONFILE',spcs'Celebrant: 'MARRIAGECELEBRANT)
- IF MARRIAGECOMMENT ~= '' THEN WriteLn('PERSONFILE',spcs' 'MARRIAGECOMMENT)
- /*********************************************************************************/
-
- DO k = 0 TO 39 /* ??? GETTOTCHILDREN FGRN ??? */
- 'GETCHILD' mFGRN k
- mFGRNc = RESULT
- 'GETFIRSTNAME' mFGRNc
- mFGRNcFIRSTNAME = RESULT
- /**/
- IF mFGRNcFIRSTNAME ~= "" THEN
- DO
- 'GETLASTNAME' mFGRNc
- mFGRNcLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' mFGRNc
- mFGRNcFIRSTNAME = RESULT
- thelastname = mFGRNcLASTNAME
- mFGRNcFULLNAME = GetFullName(mFGRNcFIRSTNAME)
- 'GETSEX' mFGRNc
- mFGRNcGENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- 'GETBIRTHDATE' mFGRNc
- mFGRNcBIRTHDATE = RESULT
- 'GETDEATHDATE' mFGRNc
- mFGRNcDEATHDATE = RESULT
- /**/
- IF mFGRNcBIRTHDATE = "" THEN
- mFGRNcFILENAME = Space(substr(mFGRNcFIRSTNAME,1,2) substr(mFGRNcLASTNAME,1,6) mFGRNc)
- ELSE
- mFGRNcFILENAME = Space(substr(mFGRNcFIRSTNAME,1,2) substr(mFGRNcLASTNAME,1,4) mFGRNcBIRTHDATE)
-
- jk = MARRIAGES - i
- WriteCH('PERSONFILE',vert.jk' |_____ <A HREF="'mFGRNcFILENAME'.html">')
- /**/
- IF mFGRNcLASTNAME ~= LASTNAME THEN
- WriteCH('PERSONFILE',' 'mFGRNcFULLNAME)
- ELSE
- WriteCH('PERSONFILE',mFGRNcFIRSTNAME )
-
- WriteCH('PERSONFILE','</A> ('mFGRNcGENDER') 'mFGRNcBIRTHDATE)
- /**/
- IF mFGRNcDEATHDATE ~= "" THEN
- WriteCH('PERSONFILE',' + 'mFGRNcDEATHDATE)
-
- Writeln('PERSONFILE','')
- END
- END
- END
- /*********************************************************************************/
- END
- END
- ELSE DO
- WriteLn('PERSONFILE',' |')
- WriteLn('PERSONFILE',' <B>'FULLNAME'</B>')
- END
- WriteLn('PERSONFILE','</TT></PRE>')
- /* WriteLn('PERSONFILE','<HR>')
- WriteLn('PERSONFILE','<Address>')
- WriteCh('PERSONFILE','<H3>ScionGenealogist © Robbie J Akins; ')
- WriteLn('PERSONFILE','Scion3.06ToMosaic.rexx © Harold H. Ipolyi</H3>')
- WriteLn('PERSONFILE','</Address>') */
- WriteLn('PERSONFILE','</HTML>')
- Close('PERSONFILE')
- IF target = "NORMAL" & LASTNAME ~= "" THEN DO
- WriteCH('GenealogyFile','<A HREF="'PERSONFILENAME'.html">')
- IF GENDER = 'f' THEN WriteCH('GenealogyFile','<I>')
- ELSE WriteCH('GenealogyFile','<B>')
- WriteCH('GenealogyFile',FULLNAME)
- IF GENDER = 'f' THEN WriteCH('GenealogyFile','</I>')
- ELSE WriteCH('GenealogyFile','</B>')
- WriteCH('GenealogyFile','</A>')
- IF BIRTHDATE ~= "" THEN WriteCH('GenealogyFile',' ^ 'BIRTHDATE)
- IF DEATHDATE ~= "" THEN WriteCH('GenealogyFile',' + 'DEATHDATE' ')
- /*********************************************************************************/
- IF HasFATHER THEN DO
- WriteCH('GenealogyFile',' (()) ')
- IF HasFileFATHER THEN WriteCH('GenealogyFile','<A HREF="'FATHERFILENAME'.html">')
- WriteCH('GenealogyFile','<B>'FATHERFULLNAME'</B>')
- IF HasFileFATHER THEN WriteCH('GenealogyFile','</A>')
- IF HasMOTHER THEN DO
- IF HasFATHER THEN WriteCH('GenealogyFile',' //\ ')
- IF HasFileMOTHER THEN WriteCH('GenealogyFile','<A HREF="'MOTHERFILENAME'.html">')
- WriteCH('GenealogyFile','<I>'MOTHERFULLNAME'</I>')
- IF HasFileMOTHER THEN WriteCH('GenealogyFile','</A>')
- END
- END
- /*********************************************************************************/
- WriteLn('GenealogyFile','<BR>') /* do not close, we have many more to go. */
- END
- RETURN
-
-
-
-
-
- IsNumeric: PROCEDURE
- PARSE ARG str
- RETURN DataType(str, 'W')
-
-
- /* create a file name short but unique */
-
- FilName: PROCEDURE
- PARSE ARG finm lanm bdate
- RETURN Space(substr(finm,1,2) substr(lanm,1,4) bdate)
-
- /******************************** Makedir **********************************/
-
- /* Makedir - If a directory under the given name already exists, or can be
- created, return 1, otherwise return 0. Though this function works
- correctly under Workbench 1.3, it has the same effect as the existing
- MAKEDIR; hence it is useful only under 2.0.
- */
- Makedir: procedure
- ds = statef(arg(1))
-
- if ds='' then
- result = 'MAKEDIR'(arg(1))
- else
- result = left(ds,3) = 'DIR'
-
- return result
-
-
- GetLength: PROCEDURE
- PARSE UPPER ARG names
- nonletters = length(compress(names, xrange('A','Z')))
- RETURN Length(names) - nonletters * 4 / 10
-
- /* create a full name from first, last, and honorifics parts */
-
- GetFullName: PROCEDURE EXPOSE thelastname
- PARSE ARG firstnames "," hon
- IF hon = "" THEN RETURN firstnames thelastname
- RETURN firstnames Space(thelastname) || ","hon
-
-
-
- /* Capitalize last name; also handle special cases! */
- /* End users must customize this code to aviod trashy output */
-
- GetLastName: PROCEDURE
- PARSE ARG str
- IF str = "BAUER-GAUSS" THEN RETURN "Bauer-Gauss"
- IF str = "DE IPOLYI" THEN RETURN "deIpolyi"
- IF str = "MC GRADY" THEN RETURN "McGrady"
- IF str = "V.BAUER" THEN RETURN "v.Bauer"
- IF str = "KIS RED" THEN RETURN "KisRed"
- IF str = "ROTH-HACKENSCHMIDT" THEN RETURN "Roth-Hackenschmidt"
- ELSE
- DO
- spart = translate(substr(str,2,length(str)),xrange('a','z'),xrange('A','Z'))
- END
- RETURN substr(str,1,1)Space(spart)
-